#ifndef NMC_ROOMBLUEPRINT_HPP
#define NMC_ROOMBLUEPRINT_HPP

#include <string>

#include <allegro.h>

namespace nmc
{
	class TileLayer;
	class Room;

	class RoomBlueprint
	{
	public:
		enum Layer
		{
			BACKGROUND_LAYER,
			FOREGROUND_LAYER,
			PROPERTY_LAYER,
			ENTITY_LAYER			
		};

		static const int NUM_LAYERS = 4;

		RoomBlueprint(int width, int height, const std::string& filename);

		RoomBlueprint(const std::string& filename);

		~RoomBlueprint();

		void save();

		void save(const std::string& filename);

		TileLayer *getLayer(Layer layer);

		void resize(int width, int height);

		int getWidth();

		int getHeight();

		const std::string& getFilename();

		void setWorldPosition(int x, int y);

		int getWorldX();

		int getWorldY();

		BITMAP* getMinimap();

	protected:
		TileLayer *mLayers[NUM_LAYERS];
		int mX, mY;
		std::string mFilename;
		BITMAP* mMiniMap;
	};
}

#endif